package com.itheima.controller;

import com.itheima.health.entity.QueryPageBean;
import com.itheima.health.entity.Result;
import com.itheima.health.pojo.CheckItem;
import com.itheima.health.service.CheckItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.dubbo.common.utils.Page;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@Api(tags = "检查项管理开发")  // 作用在类上
public class CheckItemController {

    @Reference
    private CheckItemService checkItemService;

    //  查询所有的检查项信息   Result   响应数据规范   json 格式数据
    //   后续业务出错  bug   采用全局异常捕捉  响应前端
    @ApiOperation(value = "检查项列表查询", notes = "根据客户端请求，完成检查项所有信息列表查询")//   添加业务方法上
    @GetMapping("checkitem/findAll")
    public Result findAll() {
        //System.out.println("执行了");
        List<CheckItem> list = checkItemService.list();
       // System.out.println(list);
        return new Result(list);
    }

    @PostMapping("checkitem/findPage")//post请求
    @ApiOperation(value = "分页查询", notes = "根据客户端请求，完成分页查询")//   添加业务方法上
    @ApiImplicitParams({
            @ApiImplicitParam(name = "currentPage", value = "当前分页页码", required = true, paramType = "form", dataType = "Integer"),
            @ApiImplicitParam(name = "pageSize", value = "每页显示记录数", required = true, paramType = "form", dataType = "Integer"),
            @ApiImplicitParam(name = "queryString", value = "查询条件", required = false, paramType = "form", dataType = "String")
    })
    public Result findPage(@RequestBody QueryPageBean queryPageBean) {
        //条件查询

      //  System.out.println(queryPageBean.getQueryString());
        return new Result(checkItemService.findPage(queryPageBean)); //   total  +  List

    }

    //  明天完成的代码 。。。
    //业务层 出现异常  在业务层抛出给调用者 调用者会捕捉异常
    //添加 方法 在项目中如果出现异常，要在业务代码 try caths
    //web全局异常处理机制 统一处理
    @PostMapping("checkitem/add")
    public Result add(@RequestBody CheckItem checkItem) { //接收前端发来的数据
        /* checkitem  有 id  托管态 执行 update xx set xxx? x? where id -?
         * checkitem  传来没有id 瞬时态 没有id 执行 save 方法 insert
         * */
        //更改后 添加或者修改的代码
        boolean b = checkItemService.saveOrUpdate(checkItem);
        return new Result(b);
        // boolean save = checkItemService.save(checkItem);
        //添加调用save方法是mp提供得
        // return new Result(checkItemService.save(checkItem));
        //返回得是 Result得true
        //此方法一旦出现异常 会被全局异常类GlobalExceptionHandler捕捉到
        //会设置flag为 false

    }

    @DeleteMapping("checkitem/deleteCheckItemById/{id}")
    public Result deleteCheckItemById(@PathVariable("id") int id) {

        return new Result(checkItemService.updateCheckItemById(id)); //   total  +  List

    }


}








